#include <iostream>

#include <iostream>

void swap(int& a, int& b) {
    asm volatile (
            "movl %0, %%eax\n\t"  // 将a的值加载到eax寄存器
            "movl %1, %%ebx\n\t"  // 将b的值加载到ebx寄存器
            "movl %%ebx, %0\n\t"  // 将ebx的值（原b的值）存储到a
            "movl %%eax, %1\n\t"  // 将eax的值（原a的值）存储到b
            : "+r" (a), "+r" (b)  // 输出操作数，+表示读写操作
            :                     // 无输入操作数
            : "%eax", "%ebx", "memory" // clobbered寄存器和内存
            );
}

int main() {
    int x = 5;
    int y = 10;
    std::cout << "Before swap: x = " << x << ", y = " << y << std::endl;
    swap(x, y);
    std::cout << "After swap: x = " << x << ", y = " << y << std::endl;
    return 0;
}



